package com.rfsp.mcp.pojo.dto;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;

import com.rfsp.common.pojo.bo.AttachFile;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import com.rfsp.common.base.BaseDTO;

public class FinanceDTO extends BaseDTO {

    /** 主键ID */
    private Long id;

    /** 辅助标识，防止修改主键ID查询的漏洞，不保证唯一 */
    private String aid;

    /** 两定机构ID */
    private Long orgId;
    
    /** YBJ ID */
    private Long orgYBJId;
    
    /** YBJ AID */
    private String orgYBJAId;
    
    /** 两定机构类型 */
    @NotEmpty(message = "请填写定点机构类型，最多输入50位")
    @Length(max = 50, message = "定点机构类型最多输入50位")
    private String miOrgType;

    /** 医保贷产品ID */
    private Long productId;

    /** 资金方机构ID */
    private Long bankOrgId;

    /** 医保平台ID */
    private Long pfmId;
    /** 医保平台 地址 */
    private String pfmAreaAddress;

    /** 授权ID */
    private Long authId;
    
    /** 授权AID */
    private String authAid;
    
    /** 授权书编号 */
    @NotEmpty(message = "请签发授权书")
    private String authNo;

    /** 融资申请编号 */
    private String financeNo;

    /** 融资申请状态（1：已申请 2：已成交 3：已撤销） */
    private String financeStatus;

    /** 查看状态（1：未查看 2：已查看） */
    private String financeViewStatus;
    
    /** 金额 */
    @NotNull(message = "请填写金额，仅可以输入数字和小数点，最多输入12位整数和2位小数")
    @DecimalMin(value = "0",message = "仅可以输入数字和小数点，最多输入12位整数和2位小数")
    @DecimalMax(value = "999999999999.99",message = "仅可以输入数字和小数点，最多输入12位整数和2位小数")
    @Digits(integer=12, fraction=2, message="仅可以输入数字和小数点，最多输入12位整数和2位小数")
    private BigDecimal financeAmount;

    /** 币种 */
    private String financeCurrency;

    /** 融资期限 */
    @NotEmpty(message = "请选择融资期限")
    private String financeLimit;

    /** 开户名称 */
//    @NotEmpty(message = "请填写开户名称，长度不能超过200位")
    @Length(max = 200, message = "开户名称最多输入200位")
    private String accountName;

    /** 银行账号 */
//    @NotEmpty(message = "请填写银行账号，长度不能超过50位")
    @Length(max = 50, message = "银行账号最多输入50位")
    private String accountNo;

    /** 开户行 */
//    @NotEmpty(message = "请填写开户行，长度不能超过200位")
    @Length(max = 200, message = "开户行最多输入200位")
    private String accountBank;

    /** 联系人 */
    @NotEmpty(message = "请填写联系人，长度不能超过20位")
    @Length(max = 20, message = "联系人最多输入20位")
    private String contactName;

    /** 移动电话 */
    @NotEmpty(message = "请填写移动电话，长度不能超过20位 ")
    @Length(max = 20, message = "移动电话最多输入20位")
    private String contactMobile;

    /** 固定电话 */
    @Length(max = 20, message = "固定电话最多输入20位")
    private String contactTel;

    /** 申请时间 */
    private Date applyTime;

    /** 撤销申请原因 */
    private String revokeApplyReason;

    /** 撤销申请时间 */
    private Date revokeApplyTime;

    /** 撤销申请用户id */
    private Long revokeApplyUserId;

    /** 撤销审批状态（1：待审批 2：已同意 3：已拒绝） */
    private String revokeVerifyStatus;

    /** 撤销审批意见 */
    private String revokeVerifyRemark;

    /** 撤销审批时间 */
    private Date revokeVerifyTime;

    /** 撤销审批用户id */
    private Long revokeVerifyUserId;

    /** 借款用途 */
    @NotEmpty(message = "请填写借款用途，长度不能超过500位")
    @Length(max = 500, message = "借款用途最多输入500位")
    private String financePurpose;

    /** 备注 */
    @Length(max = 500, message = "备注最多输入500位")
    private String financeRemark;

    /** 操作用户ID */
    private Long optUserId;

    /** 操作时间 */
    private Date optTime;

    /** 操作类型（1.新增 2.修改 3.删除） */
    private String optType;

    /** null */
    private String remark1;

    /** null */
    private String remark2;

    /** null */
    private String remark3;

    /** null */
    private String remark4;

    /** null */
    private String remark5;
    
//    @NotEmpty(message = "请选择医保统筹区")
    private String province;
    
    private String city;
    
    private String county;
    
    private String guize1;
    
    private String guize2;
    
    /**================= 授权信息 ===============*/
    private String authStartTime;
    private String authEndTime;
    

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getAid() {
        return aid;
    }

    public void setAid(String aid) {
        this.aid = aid;
    }

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getBankOrgId() {
        return bankOrgId;
    }

    public void setBankOrgId(Long bankOrgId) {
        this.bankOrgId = bankOrgId;
    }

    public Long getPfmId() {
        return pfmId;
    }

    public void setPfmId(Long pfmId) {
        this.pfmId = pfmId;
    }

    public String getPfmAreaAddress() {
        return pfmAreaAddress;
    }

    public void setPfmAreaAddress(String pfmAreaAddress) {
        this.pfmAreaAddress = pfmAreaAddress;
    }

    public Long getAuthId() {
        return authId;
    }

    public void setAuthId(Long authId) {
        this.authId = authId;
    }

    public String getAuthNo() {
		return authNo;
	}

	public void setAuthNo(String authNo) {
		this.authNo = authNo;
	}

	public String getFinanceNo() {
        return financeNo;
    }

    public void setFinanceNo(String financeNo) {
        this.financeNo = financeNo;
    }

    public String getFinanceStatus() {
        return financeStatus;
    }

    public void setFinanceStatus(String financeStatus) {
        this.financeStatus = financeStatus;
    }

    public String getFinanceViewStatus() {
        return financeViewStatus;
    }

    public void setFinanceViewStatus(String financeViewStatus) {
        this.financeViewStatus = financeViewStatus;
    }

    public String getFinanceCurrency() {
        return financeCurrency;
    }

    public void setFinanceCurrency(String financeCurrency) {
        this.financeCurrency = financeCurrency;
    }

    public String getFinanceLimit() {
        return financeLimit;
    }

    public void setFinanceLimit(String financeLimit) {
        this.financeLimit = financeLimit;
    }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    public String getAccountNo() {
        return accountNo;
    }

    public void setAccountNo(String accountNo) {
        this.accountNo = accountNo;
    }

    public String getAccountBank() {
        return accountBank;
    }

    public void setAccountBank(String accountBank) {
        this.accountBank = accountBank;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactMobile() {
        return contactMobile;
    }

    public void setContactMobile(String contactMobile) {
        this.contactMobile = contactMobile;
    }

    public String getContactTel() {
        return contactTel;
    }

    public void setContactTel(String contactTel) {
        this.contactTel = contactTel;
    }

    public Date getApplyTime() {
        return applyTime;
    }

    public void setApplyTime(Date applyTime) {
        this.applyTime = applyTime;
    }

    public String getRevokeApplyReason() {
        return revokeApplyReason;
    }

    public void setRevokeApplyReason(String revokeApplyReason) {
        this.revokeApplyReason = revokeApplyReason;
    }

    public Date getRevokeApplyTime() {
        return revokeApplyTime;
    }

    public void setRevokeApplyTime(Date revokeApplyTime) {
        this.revokeApplyTime = revokeApplyTime;
    }

    public Long getRevokeApplyUserId() {
        return revokeApplyUserId;
    }

    public void setRevokeApplyUserId(Long revokeApplyUserId) {
        this.revokeApplyUserId = revokeApplyUserId;
    }

    public String getRevokeVerifyStatus() {
        return revokeVerifyStatus;
    }

    public void setRevokeVerifyStatus(String revokeVerifyStatus) {
        this.revokeVerifyStatus = revokeVerifyStatus;
    }

    public String getRevokeVerifyRemark() {
        return revokeVerifyRemark;
    }

    public void setRevokeVerifyRemark(String revokeVerifyRemark) {
        this.revokeVerifyRemark = revokeVerifyRemark;
    }

    public Date getRevokeVerifyTime() {
        return revokeVerifyTime;
    }

    public void setRevokeVerifyTime(Date revokeVerifyTime) {
        this.revokeVerifyTime = revokeVerifyTime;
    }

    public Long getRevokeVerifyUserId() {
        return revokeVerifyUserId;
    }

    public void setRevokeVerifyUserId(Long revokeVerifyUserId) {
        this.revokeVerifyUserId = revokeVerifyUserId;
    }

    public Long getOptUserId() {
        return optUserId;
    }

    public void setOptUserId(Long optUserId) {
        this.optUserId = optUserId;
    }

    public Date getOptTime() {
        return optTime;
    }

    public void setOptTime(Date optTime) {
        this.optTime = optTime;
    }

    public String getOptType() {
        return optType;
    }

    public void setOptType(String optType) {
        this.optType = optType;
    }

    public String getRemark1() {
        return remark1;
    }

    public void setRemark1(String remark1) {
        this.remark1 = remark1;
    }

    public String getRemark2() {
        return remark2;
    }

    public void setRemark2(String remark2) {
        this.remark2 = remark2;
    }

    public String getRemark3() {
        return remark3;
    }

    public void setRemark3(String remark3) {
        this.remark3 = remark3;
    }

    public String getRemark4() {
        return remark4;
    }

    public void setRemark4(String remark4) {
        this.remark4 = remark4;
    }

    public String getRemark5() {
        return remark5;
    }

    public void setRemark5(String remark5) {
        this.remark5 = remark5;
    }

    public String getFinancePurpose() {
        return financePurpose;
    }

    public void setFinancePurpose(String financePurpose) {
        this.financePurpose = financePurpose;
    }

    public String getFinanceRemark() {
        return financeRemark;
    }

    public void setFinanceRemark(String financeRemark) {
        this.financeRemark = financeRemark;
    }


    private List<AttachFile> attachFileList;
    private String attachFileContent;

    public List<AttachFile> getAttachFileList() {
        return attachFileList;
    }

    public void setAttachFileList(List<AttachFile> attachFileList) {
        this.attachFileList = attachFileList;
    }

    public String getAttachFileContent() {
        return attachFileContent;
    }

    public void setAttachFileContent(String attachFileContent) {
        this.attachFileContent = attachFileContent;
    }

	public String getProvince() {
		return province;
	}

	public void setProvince(String province) {
		this.province = province;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getCounty() {
		return county;
	}

	public void setCounty(String county) {
		this.county = county;
	}

	public String getMiOrgType() {
		return miOrgType;
	}

	public void setMiOrgType(String miOrgType) {
		this.miOrgType = miOrgType;
	}

	public String getAuthStartTime() {
		return authStartTime;
	}

	public void setAuthStartTime(String authStartTime) {
		this.authStartTime = authStartTime;
	}

	public String getAuthEndTime() {
		return authEndTime;
	}

	public void setAuthEndTime(String authEndTime) {
		this.authEndTime = authEndTime;
	}

	public String getGuize1() {
		return guize1;
	}

	public void setGuize1(String guize1) {
		this.guize1 = guize1;
	}

	public String getGuize2() {
		return guize2;
	}

	public void setGuize2(String guize2) {
		this.guize2 = guize2;
	}

	public Long getOrgYBJId() {
		return orgYBJId;
	}

	public void setOrgYBJId(Long orgYBJId) {
		this.orgYBJId = orgYBJId;
	}

	public String getOrgYBJAId() {
		return orgYBJAId;
	}

	public void setOrgYBJAId(String orgYBJAId) {
		this.orgYBJAId = orgYBJAId;
	}

	public BigDecimal getFinanceAmount() {
		return financeAmount;
	}

	public void setFinanceAmount(BigDecimal financeAmount) {
		this.financeAmount = financeAmount;
	}

	public String getAuthAid() {
		return authAid;
	}

	public void setAuthAid(String authAid) {
		this.authAid = authAid;
	}

}
